package com.itheima.xx.dao;

import com.itheima.xx.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Description:
 *
 * @author codermao
 * @date 2023/10/25 10:36
 */
public interface UserMapper {
    /**
     查询所有的用户
     */
    List<User> findAllUsers();

    //根据id查询
    User queryById(Integer id);

    //添加
    void saveUser(User user);

    //修改
    void updateUser(User user);

    //根据id删除
    void deleteUser(Integer id);

    User queryUserByUserNameAndSex(@Param("name") String username, @Param("gender") String sex);

    User queryUserByMap(Map<String,String> map);

    /**
     * 自增主键回填
     * @param user
     */
    void addUser(User user);

    /**
     * 根据输入的表名，统计表中总记录数
     */
    Integer queryUserCount(@Param("tableName")String tableName);

    List<User> queryUserByLikeUserName(@Param("userName") String userName);

    Map<String,Object> queryUserByIdReturnMap(@Param("id") Integer id);

    @MapKey("id")
    Map<Integer, User> queryReturnMap();

    /**
     * resultMap使用：
     *  需求：查询id是1的用户将数据封装到实体类User中
     */
    User queryUserById2(@Param("id") Integer id);
}
